package models

import (
	"fmt"
	"gameserver/tools/TestRobot/cmd"
	"gameserver/tools/TestRobot/internal"
	"time"
)

/*
基础Cmd
*/
func init() {
	cmd.GetCmdMgr().RegisterCmd(cmd.Cmd_User, "创建用户", CmdUser,
		cmd.NewParam("name", "机器人的名字前缀 机器人的名字格式为：name", "robot"),
		cmd.NewParam("channel", "机器人使用的渠道ID robot 表示机器人可以跳过一些统计 1 表示开发账号 其他表示对应的渠道号", "default"),
		cmd.NewParam("step", "每隔多少秒创建", "1"),
		cmd.NewParam("loop", "循环次数", "1"),
		cmd.NewParam("num", "每次循环创建数量", "1"),
	)
}

func CmdUser(ic *cmd.InputCmd) {
	name := ic.GetString("name")
	channel := ic.GetString("channel")
	// bev := ic.GetString("bev")

	step := ic.GetInt("step") //每隔多少秒创建
	loop := ic.GetInt("loop") //循环次数
	num := ic.GetInt("num")   //每次循环创建数量
	max := num * loop         //最大数量
	for i := 0; i < max; i++ {
		user := NewRobotUser()
		user.UserName = fmt.Sprintf("%s%d", name, i)
		user.Channel = channel
		user.RoleName = internal.GetName()
		user.GroupID = internal.Config.GroupID
		cmdinfo := cmd.GetCmdMgr().CmdList[cmd.Logic_Login]
		nic := new(cmd.InputCmd)
		nic.Cmd = cmdinfo
		nic.Param = make(map[string]string)
		delay := time.Duration(i/num*step) * time.Second
		nic.Param["delay"] = fmt.Sprintf("%d", delay)
		user.Input.Store(nic)
		user.Start(internal.Thgo)
	}

}
